/**
 * Copyright (C) 2010 Cloudfarming <info@cloudfarming.nl>
 *
 * Licensed under the Eclipse Public License - v 1.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.eclipse.org/legal/epl-v10.html
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package nl.cloudfarming.client.geoviewer.jxmap.layerlist;

import java.awt.event.ActionEvent;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import nl.cloudfarming.client.geoviewer.Layer;
import nl.cloudfarming.client.geoviewer.LayerAction;
import nl.cloudfarming.client.geoviewer.MapController;
import org.openide.util.NbBundle;
import org.openide.util.Utilities;
import org.openide.util.actions.Presenter;

/**
 * Action for sorting a layer (move up and move down).
 * 
 * @author Timon Veenstra
 */
//@ServiceProvider(service=LayerAction.class)

//TODO reimplement in sort layer user story

public class SortLayerAction extends LayerAction implements Presenter.Popup {

    private static final String KEY_ACTION_MOVEUP = "sort_layer.moveup";
    private static final String KEY_ACTION_MOVEDOWN = "sort_layer.movedown";
    private static final String KEY_MENU_SORT = "sort_layer.menu";
    private static final long serialVersionUID = -4636219010248961002L;

    public SortLayerAction() {
    }

    @Override
    public void actionPerformed(ActionEvent ae) {
        Layer layer = Utilities.actionsGlobalContext().lookup(Layer.class);
        MapController mapApi = Utilities.actionsGlobalContext().lookup(MapController.class);
        assert mapApi != null;
        assert layer != null;

//        if (KEY_ACTION_MOVEDOWN.equals(command)) {
            //TODO implement ordering
//            mapApi.moveLayerDown(layer);
//            LayerListTopComponent.findInstance().refresh();
//        } else if (KEY_ACTION_MOVEUP.equals(command)) {
            //TODO implement ordering
//            mapApi.moveLayerUp(layer);
//            LayerListTopComponent.findInstance().refresh();
//        } else {
//            logger.warning("unknown action performed with command " + command + " doing nothing.");
//        }
    }

    @Override
    public JMenuItem getPopupPresenter() {
        // context menu item action move up
        JMenuItem itemMoveUp = new JMenuItem();
        itemMoveUp.setText(NbBundle.getMessage(this.getClass(), KEY_ACTION_MOVEUP));
        itemMoveUp.setActionCommand(KEY_ACTION_MOVEUP);
        itemMoveUp.addActionListener(this);

        // context menu item action move down        
        JMenuItem itemMoveDown = new JMenuItem();
        itemMoveDown.setText(NbBundle.getMessage(this.getClass(), KEY_ACTION_MOVEDOWN));
        itemMoveDown.setActionCommand(KEY_ACTION_MOVEDOWN);
        itemMoveDown.addActionListener(this);

        // context menu root        
        JMenu result = new JMenu(NbBundle.getMessage(this.getClass(), KEY_MENU_SORT));
        result.add(itemMoveUp);
        result.add(itemMoveDown);

        return result;
    }
}
